﻿//-------------------------------------------------------------------------------------
// All Rights Reserved , Copyright (C) 2011 , JamSoft TECH, Ltd .
//-------------------------------------------------------------------------------------
using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;

// 本系统生成的类库
using DotNet.Utilities;
using DotNet.Business;

/// <remarks>
/// LeftMenu
/// 左侧导航菜单
/// 
/// 修改纪录
/// 
///	版本：1.0 2011.08.26 LiangMingMing  创建代码。 
/// <author>
///		<name>LiangMingMing</name>
///		<date>2011.08.26</date>
/// </author> 
/// </remarks>
public partial class LeftSubMenu : BasePage
{
    // **********************************************************************************************
    // *                                                                                            * 
    // *                             Public Variate    公共变量                                     *
    // *                                                                                            * 
    // **********************************************************************************************

    /// <summary>
    /// 模块主键
    /// </summary>
    private string ModuleId = string.Empty;

    // **********************************************************************************************
    // *                                                                                            * 
    // *                             InitializeComponent  初始化                                    * 
    // *                                                                                            * 
    // **********************************************************************************************

    #region private void PageOnLoad() 加载页面
    /// <summary>
    /// 加载页面
    /// </summary>
    private void PageOnLoad()
    {
        // 获取参数
        this.GetParamter();
        if (!string.IsNullOrEmpty(this.ModuleId))
        {
            // 加载菜单
            this.LoadModules();
        }
    }
    #endregion

    // **********************************************************************************************
    // *                                                                                            * 
    // *                                       Method   操作方法                                    * 
    // *                                                                                            * 
    // **********************************************************************************************

    #region private void GetParamter() 读取参数
    /// <summary>
    /// 读取参数
    /// </summary>
    private void GetParamter()
    {
        if (Page.Request["ModuleId"] != null)
        {
            this.ModuleId = Page.Request["ModuleId"].ToString();
        }
    }
    #endregion

    #region private void LoadModules()
    /// <summary>
    /// 加载模块树的代码
    /// </summary>
    private void LoadModules()
    {
        DataRow[] dataRows = this.DTModule.Select(  BaseModuleEntity.FieldParentId + "='" + this.ModuleId + "'", BaseModuleEntity.FieldSortCode);
        // 循环加载
        for (int i = 0; i < dataRows.Length; i++)
        {
            // 创建新节点
            TreeNode treeNode = new TreeNode();
            treeNode.Value = dataRows[i][BaseModuleEntity.FieldId].ToString();
            treeNode.Text = dataRows[i][BaseModuleEntity.FieldFullName].ToString();
            treeNode.Target = dataRows[i][BaseModuleEntity.FieldTarget].ToString();
            treeNode.Expanded = dataRows[i][BaseModuleEntity.FieldExpand].ToString().Equals("1");
            treeNode.NavigateUrl = dataRows[i][BaseModuleEntity.FieldNavigateUrl].ToString();
            treeNode.ImageUrl = dataRows[i][BaseModuleEntity.FieldImageIndex].ToString();
            // 树型结构不要生成，否则速度会比较慢一些
            this.LoadModules(treeNode);
            // 递归构造树形结构
            this.tvModules.Nodes.Add(treeNode);
        }
    }
    #endregion

    #region private void LoadModules(TreeNode treeNode) 递归构造树形结构
    /// <summary>
    /// 递归构造树形结构
    /// </summary>
    /// <param name="treeNode">节点</param>
    private void LoadModules(TreeNode treeNode)
    {
        // 获取父节点为 treeNode.Value 的记录
        DataRow[] dataRows = this.DTModule.Select(BaseModuleEntity.FieldParentId + "='" + treeNode.Value + "'", BaseModuleEntity.FieldSortCode);
        // 循环加载
        for (int i = 0; i < dataRows.Length; i++)
        {
            // 创建新节点
            TreeNode subTreeNode = new TreeNode();
            // 赋值
            subTreeNode.Value = dataRows[i][BaseModuleEntity.FieldId].ToString();
            subTreeNode.Text = dataRows[i][BaseModuleEntity.FieldFullName].ToString();
            subTreeNode.Target = dataRows[i][BaseModuleEntity.FieldTarget].ToString();
            subTreeNode.Expanded = dataRows[i][BaseModuleEntity.FieldExpand].ToString().Equals("1");
            subTreeNode.NavigateUrl = dataRows[i][BaseModuleEntity.FieldNavigateUrl].ToString();
            subTreeNode.ImageUrl = dataRows[i][BaseModuleEntity.FieldImageIndex].ToString();
            treeNode.ChildNodes.Add(subTreeNode);
            // 递归调用
            this.LoadModules(subTreeNode);
        }
    }
    #endregion

    // **********************************************************************************************
    // *                                                                                            * 
    // *                                       EventArgs    事件方法                                * 
    // *                                                                                            * 
    // ********************************************************************************************** 

    #region protected void Page_Load(object sender, EventArgs e) 加载页面
    /// <summary>
    /// 加载页面
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            // 加载页面
            this.PageOnLoad();
        }
    }
    #endregion
}
